package com.lancoo.ccas53.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.List;

/**
 * <p>
 * 课程环节表
 * </p>
 *
 * @author quin.song
 * @since 2024-05-20
 */
@Data
@Accessors(chain = true)
@EqualsAndHashCode(of = {"taskId", "baseCourseId", "flag"})
@ApiModel(value = "Course对象", description = "课程环节表")
public class Course implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(value = "course_id", type = IdType.AUTO)
    private Long courseId;

    private Integer taskId;

    private String baseCourseId;

    private String courseName;

    private String courseTypeId;

    @ApiModelProperty("课程类别")
    private String courseType;

    @ApiModelProperty("课程性质 1必修 2选修")
    private Integer courseNature;

    @ApiModelProperty("专业性质，1:公共课，2:专业课")
    private Integer majorProp;

    @ApiModelProperty("课程代码")
    private String courseCode;

    @ApiModelProperty("学院id 开课单位")
    private String baseCollegeId;

    private String collegeName;

    private String subjectId;

    private String subjectName;

    @ApiModelProperty("课程学分")
    private Double credit;

    @ApiModelProperty("讲授学时")
    private Integer lectureHour;

    @ApiModelProperty("实验学时")
    private Integer experimentalHour;

    @ApiModelProperty("上机学时")
    private Integer computerHour;

    @ApiModelProperty("其他学时")
    private Integer otherHour;

    @ApiModelProperty("周数")
    private Integer weekNum;

    @ApiModelProperty("1课程 2环节")
    private Integer flag;

    @ApiModelProperty("课程备注")
    private String description;

    @ApiModelProperty("考核方式id")
    private Long assessmentId;

    @ApiModelProperty("考核方式名字")
    private String assessmentName;

    @ApiModelProperty("是否选课： 0、否 1、预选 2、在线选课 3、预选+在线选课")
    private Integer isSelect;

    @ApiModelProperty("参数是否设置 0、未设置 1、已设置")
    private Integer parameterSet;

    @ApiModelProperty("教学班是否设置 0、未设置 1、已设置")
    private Integer teachingSet;

    @ApiModelProperty("教学班生成方式 1、按培养方案生成 2、分级教学 3、行政班生成")
    private Integer teachingMode;

    @ApiModelProperty("操作状态 0未开启 1已开启 2停开（区分申请变更）")
    private Integer isEnable;

    @ApiModelProperty("")
    private Integer courseLimit;

    @TableField(exist = false)
    @ApiModelProperty("周学时")
    private Integer weekNumForSub;

    @TableField(exist = false)
    @ApiModelProperty("课程参数实体类")
    private List<CourseWeek> courseWeeks;

    @TableField(exist = false)
    @ApiModelProperty("总学时")
    private Integer totalHour;

    @ApiModelProperty(value = "开班条件")
    @TableField(exist = false)
    private Integer limitClassNum;

    @TableField(exist = false)
    @ApiModelProperty("学生端预选课-0未选 1已选")
    private Integer selectStatus;
}

